home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Celestin Apprentice 5
/
Apprentice-Release5.iso
/
Source Code
/
By the Book
/
Learn C++ (CodeWarrior)
/
Chap 05.02 - friends
/
friends.cp
< prev
next >
Wrap
Text File
|
1995-10-20
|
2KB
|
111 lines
#include <iostream.h>
#include <string.h>
const short kMaxNameSize = 20;
class Employee;
//--------------------------------------- Payroll
class Payroll
{
// Data members...
private:
// Member functions...
public:
Payroll();
~Payroll();
void PrintCheck( Employee *payee );
};
//--------------------------------------- Employee
class Employee
{
friend void Payroll::PrintCheck( Employee *payee );
// Data members...
private:
char employeeName[ kMaxNameSize ];
long employeeID;
float employeeSalary;
// Member functions...
public:
Employee( char *name, long id, float salary );
~Employee();
void PrintEmployee();
};
//------------------- Payroll Member Functions
Payroll::Payroll()
{
cout << "Creating payroll object\n";
}
Payroll::~Payroll()
{
cout << "Destroying payroll object\n";
}
void Payroll::PrintCheck( Employee *payee )
{
cout << "Pay $" << payee->employeeSalary
<< " to the order of "
<< payee->employeeName << "...\n\n";
}
//------------------- Employee Member Functions
Employee::Employee( char *name, long id, float salary )
{
strncpy( employeeName, name, kMaxNameSize );
employeeName[ kMaxNameSize - 1 ] = '\0';
employeeID = id;
employeeSalary = salary;
cout << "Creating employee #" << employeeID << "\n";
}
Employee::~Employee()
{
cout << "Destroying employee #" << employeeID << "\n";
}
void Employee::PrintEmployee()
{
cout << "-----\n";
cout << "Name: " << employeeName << "\n";
cout << "ID: " << employeeID << "\n";
cout << "Salary: " << employeeSalary << "\n";
cout << "-----\n";
}
//--------------------------------------- main
int main()
{
Employee *employee1Ptr;
Payroll *payroll1Ptr;
payroll1Ptr = new Payroll;
employee1Ptr = new Employee( "Carlos Derr", 1000, 500.0 );
employee1Ptr->PrintEmployee();
payroll1Ptr->PrintCheck( employee1Ptr );
delete employee1Ptr;
delete payroll1Ptr;
return 0;
}